package xx.services.page.rest;

import java.sql.SQLException;

import javax.servlet.http.HttpServletRequest;
import javax.sql.RowSet;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Context;

import xx.entity.page.PageTabItem;
import xx.services.Passport;
import xx.services.page.inter.ITabItemInterface;
import xx.services.util.Constants;

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

/**
 * page页面TabItem管理服务接口
 * 
 * @Path (Constants.RESTFUL_ROOT_PATH + "/page/tab/item")
 * @author dengjinye,2010-12-22 $LastChangedDate$ $Author$
 */
@Path(Constants.RESTFUL_ROOT_PATH + "/page/tab/item")
public class TabItemRest extends Passport implements ITabItemInterface
{

    public TabItemRest(@Context
    HttpServletRequest request)
    {
        super(request);
        // TODO Auto-generated constructor stub
    }

    /**
     * 获取一个TabItem，包含ItemContent<br>
     * 
     * @GET
     * @Path ("/{item_id}")
     * @param itemId-@PathParam("item_id")
     *            TabItemID
     * @return TabItem实体，包含ItemContent
     * @author chenxiang
     */
    @GET
    @Path("/{item_id}")
    public String get(@PathParam("item_id")
    long itemId)
    {
        try
        {
            PageTabItem pti = new PageTabItem(qr, owner);
            pti.setItemId(itemId).load();
            return ok(pti);
        }
        catch (Exception e)
        {
            return error(e);
        }
    }

    /**
     * 获取一个TabItem html代码，包含ItemContent的内容<br>
     * 
     * @GET
     * @Path ("/{item_id}/html")
     * @param itemId-@PathParam("item_id")
     *            TabItem ID
     * @return TabItem Html代码，不是json数据
     * @author chenxiang
     */
    @GET
    @Path("/{item_id}/html")
    public String getHtml(@PathParam("item_id")
    long itemId)
    {
        try
        {
            PageTabItem pti = new PageTabItem(qr, owner);
            String html = pti.setItemId(itemId).toHtml();
            return ok(html, HTML);
        }
        catch (Exception e)
        {
            return error(e);
        }
    }

    /**
     * 修改一个TabItem demo。<br>
     * 
     * @PUT
     * @Path ("/{item_id}")
     * @param itemId-@PathParam("item_id")
     *            TabItem ID
     * @param item-@FormParam("item")
     *            TabItem demo的Json字符串
     * @return 新的TabItem 实体
     * @author chenxiang
     */
    @PUT
    @Path("/{item_id}")
    public String update(@PathParam("item_id")
    long itemId, @FormParam("item")
    String item)
    {
        try
        {
            PageTabItem pti = new PageTabItem(qr, owner);
            pti.setItemId(itemId);
            JsonParser parser = new JsonParser();
            JsonObject jo = parser.parse(item).getAsJsonObject();
            pti.update(jo);
            return ok(pti);
        }
        catch (Exception e)
        {
            return error(e);
        }
    }

    @GET
    @Path("/{item_id}/content")
    public String getContent(@PathParam("item_id")
    long itemId)
    {
        try
        {
            PageTabItem pti = new PageTabItem(qr,owner);
            RowSet rs = pti.setItemId(itemId).getContents();
            return ok(rs);
        }
        catch (SQLException e)
        {
            return error(e);
        }
    }
}
